package co.edu.eam.persitencia.entidades;

import java.io.Serializable;
import java.lang.String;
import java.util.List;
import co.edu.eam.persitencia.enumeraciones.TipoProcedimietoEnum;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.NamedQueries;
import javax.persistence.NamedQuery;
import javax.persistence.OneToMany;
import javax.persistence.Table;

@NamedQueries({
    @NamedQuery(name=Procedimiento.CONSULTA_LISTAR_TODO,query=("SELECT procedimiento FROM Procedimiento procedimiento ")),
})
@Entity
@Table(name = "Clinica_Procedimiento")
public class Procedimiento implements Serializable {

    public static final String CONSULTA_LISTAR_TODO= "Procedimiento.ListarConsulta";
    /**
     * Identificador unico de la entidad.
     */
    @Id
    @GeneratedValue(strategy=GenerationType.IDENTITY)
    @Column(name = "Procedimiento_Id")
    private long id;
    /**
     * Tipo de procedimiento.
     */
    @Column(name = "Procedimiento_Tipo")
    private TipoProcedimietoEnum tipoProcedimiento;
    /**
     * Codigo unico del procedimiento.
     */
    @Column(name = "Procedimiento_Codigo")
    private String codigo;
    /**
     * nombre del procedimiento
     */
    @Column(name = "Procedimiento_Nombre")
    private String nombre;
    /**
     * precio del procedimiento
     */
    @Column(name = "Procedimiento_Precio")
    private double precio;
    /**
     * Lista de detalles que pueden tener este procedimiento.
     */
    @OneToMany(mappedBy = "procedimiento")
    private List<DetalleOrdenMedica> detalleOrdenMedica;

    /**
     * Constructor sin parametros.
     */
    public Procedimiento() {
        super();
    }

    /**
     * @param id
     * @param tipoProcedimiento
     * @param codigo
     * @param nombre
     */
    public Procedimiento(long id, TipoProcedimietoEnum tipoProcedimiento,
            String codigo, String nombre) {
        super();
        this.id = id;
        this.tipoProcedimiento = tipoProcedimiento;
        this.codigo = codigo;
        this.nombre = nombre;
    }

    /**
     * @return the id
     */
    public long getId() {
        return id;
    }

    /**
     * @param id the id to set
     */
    public void setId(long id) {
        this.id = id;
    }

    /**
     * @return the tipoProcedimiento
     */
    public TipoProcedimietoEnum getTipoProcedimiento() {
        return tipoProcedimiento;
    }

    /**
     * @param tipoProcedimiento the tipoProcedimiento to set
     */
    public void setTipoProcedimiento(TipoProcedimietoEnum tipoProcedimiento) {
        this.tipoProcedimiento = tipoProcedimiento;
    }

    /**
     * @return the codigo
     */
    public String getCodigo() {
        return codigo;
    }

    /**
     * @param codigo the codigo to set
     */
    public void setCodigo(String codigo) {
        this.codigo = codigo;
    }

    /**
     * @return the nombre
     */
    public String getNombre() {
        return nombre;
    }

    /**
     * @param nombre the nombre to set
     */
    public void setNombre(String nombre) {
        this.nombre = nombre;
    }

    /**
     * @return the detalleOrdenMedica
     */
    public List<DetalleOrdenMedica> getDetalleOrdenMedica() {
        return detalleOrdenMedica;
    }

    /**
     * @param detalleOrdenMedica the detalleOrdenMedica to set
     */
    public void setDetalleOrdenMedica(List<DetalleOrdenMedica> detalleOrdenMedica) {
        this.detalleOrdenMedica = detalleOrdenMedica;
    }

    @Override
    public String toString() {
        return nombre;
    }

    /**
     * @return the precio
     */
    public double getPrecio() {
        return precio;
    }

    /**
     * @param precio the precio to set
     */
    public void setPrecio(double precio) {
        this.precio = precio;
    }
}
